﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Net;
using System.Net.Sockets;
using ServCSS.ServCSS.Server;
using System.Threading;

namespace ServCSS.ChatMan.ChatMan_Server
{
    class CChatMan_srv
    {
        IPHostEntry host = Dns.Resolve(Dns.GetHostName());
        CServer server;

        public void Run()
        {
            Console.WriteLine("srv_ChatMan: Indique la IP del host de las posibles");
            for (int i = 0; i < host.AddressList.Length; i++)
            {
                Console.WriteLine(i + " > " + host.AddressList[i].ToString());
            }

            Console.Write("Srv_ChatMan: IP del Servidor: ");
            String a;

            a = Console.ReadLine();

            int[] b = { 7301, 7302, 7303, 7304, 7305 };

            server = new CServer(a, 7300, 5, 1, b);
            //server.RunCon();

            //abro un hilo de espera de conxion
            Thread hiloServerConexiones = new Thread(new ThreadStart(server.RunCon));
            hiloServerConexiones.Start();
        }

        //private void Run()
        //{
        //    int ultimaCantConex = 0;

        //    runCliente[] clientes = new runCliente[server.data.maxCon];
        //    Thread[] hiloEscuchaClientes = new Thread[server.data.maxCon];

        //    while (true)
        //    {
        //        //Agregams al nuevo cliente en el circuito logico
        //        if (ultimaCantConex != server.data.totCon)
        //        {
        //            for (int i = ultimaCantConex+1; i <= server.data.totCon; i++)
        //            {
        //                //asignamos al array clientes el mismo socket
        //                clientes[i - 1].cliente = server.data.SockCliente[i - 1];

        //                //le asignamos el hilo de escucha
        //                hiloEscuchaClientes[i - 1] = new Thread(new ThreadStart(clientes[i -1].run));
        //                hiloEscuchaClientes[i - 1].Start();
        //            }
        //        }

        //        //leemos todos los paq recividos y los reenviamos
        //        for (int i = 0; i < server.data.totCon; i++)
        //        {
        //            if()
        //        }
        //    }
        //}                                                            

    }

    //creo una clase a modo de funcion de hilo, para poder enviar y recibir datos de este
    //class runCliente
    //{
    //    //socket individual de cliente
    //    public Socket cliente { get; set; }
    //    public byte[] paqbyte = new byte[1024];


    //    public bool flagRun;

    //    public void run()
    //    {
    //        ServCSS.CPaq_Genric paq_generic = new ServCSS.CPaq_Genric();
    //        paq_generic.peticion = "Next";
    //        byte[] paqNext = byte[1024];
    //        paqNext = ServCSS.CSRepositor.Empaquetar((object)paq_generic);

    //        flagRun = true;
    //        while (true)
    //        {
    //            if (flagRun)
    //            {
    //                //enviamos un mensaje para avisar que puede seguir enviando mensajes


    //                paqbyte = new byte[1024];
    //                cliente.Receive(paqbyte);
    //                flagRun = false;
    //            }
    //        }

    //    }
    //}
}